package codingforgreat.lchot150;

import java.util.HashMap;

public class Lc380 {
    class RandomizedSet {
        public HashMap<Integer,Integer> viMap;
        public HashMap<Integer,Integer> ivMap;
        public RandomizedSet() {
            viMap = new HashMap<>();
            ivMap = new HashMap<>();
        }

        public boolean insert(int val) {
            if(!viMap.containsKey(val)){
                viMap.put(val,viMap.size());
                ivMap.put(ivMap.size(),val);
                return true;
            }else{
                return false;
            }

        }

        public boolean remove(int val) {
            if(viMap.containsKey(val)){
                int index =  viMap.get(val);
                int lastIndex = ivMap.size() - 1;
                ivMap.put(index,ivMap.get(lastIndex));
                ivMap.remove(lastIndex);
                viMap.put(ivMap.get(index),index);
                viMap.remove(val);
                return true;
            }else{
                return false;
            }

        }

        public int getRandom() {
            if(ivMap.size() == 0){
                return -1;
            }
            int index = (int) (Math.random() * viMap.size());
            if(ivMap.size() == 1){
                return ivMap.get(0);
            }
            return ivMap.get(index) ;
        }
    }
}
